<?php
/*
 ADMIN.PHP by martin $ 2009/12/25 15:59:50
*/

@ob_start("ob_gzhandler");

$white_list = array();

include_once('owner/ini.inc.php');
include_once(OD.'usrlist.ini.php'); # $USR_LIST の読み込み

header ("Content-Type: text/html; charset=".ENCODE);

mb_language('Japanese');
mb_internal_encoding(ENCODE);

include_once('utils.php');
include_once('utils_admin.php');

include_once ('session.class.php');

if(!defined('ADMIN')) define('ADMIN', Auth() ? TRUE : FALSE);

include_once ('cache.php');

$hasShareUsr = !empty($USR_LIST) ? TRUE : FALSE; # 共有ユーザがいるか？

$_self = 'admin.php';

$DIVISION = array('header'=>'', 'style'=>'', 'script'=>'', 'body'=>'');

$DIVISION['header'] = $DIVISION['body'] = $showMsg = '';

$ip = getenv('REMOTE_ADDR') ? getenv('REMOTE_ADDR') : $_SERVER['REMOTE_ADDR'];
if(empty($ip)) _header('index.php');
$_ip = implode('', array_slice($sip=explode('.', $ip), 0, 2));

$timeout = FALSE;

if(ADMIN && g_('cancel_autologin') == 1){
 if(!empty($_COOKIE['PPBLOG_AUTO_LOGIN'])){
  setcookie('PPBLOG_AUTO_LOGIN', '', time() - 20000);
  $SESSION->scavenge(); $SESSION->destroy();
  _header('admin.php');
 }
}

if($mode=='login' && EXCLUSIVE_LOGIN){
 $sess_files = my_glob('p2b_sess', OD);
 foreach ($sess_files as $file){
  $_sess = unserialize(get_file_content($file));
  if($_sess['expire'] > time()){
   exit("設定により排他的ログインが有効になっていて，\nユーザー ".my_decrypt($_sess['ppBlog_login_name'])." がログイン中なのでログイン出来ません.");
  }
 }
}

if($mode=='logout'){ # ログアウト
 $SESSION->scavenge();
 $SESSION->destroy();
 _header(ROOT_PATH.'index.php');
}

if($mode=='login' && p_('type')=='ajax'){
 if(ADMIN){
  if($SESSION->owner()==ONAME){
   $to = (isset($_COOKIE['default_mode']) && $_COOKIE['default_mode']=='_top') ? 'index.php' : 'admin.php';
  } else $to = 'index.php';
  exit($to);
 }
}

if(empty($theme) || USE_THEME_CHANGER==FALSE || !is_file($theme)){
 include_once(OD.'theme.ini.php'); // $THEME_LIST の読み込み
 $theme = array_values($THEME_LIST);
 $theme = $theme[0]; # 最初のやつをセット
}

$theme_dir = dirname($theme).'/';
include_once ($theme_dir.'template.php');

if(isset($_COOKIE['default_mode'])){
 if(empty($_VARS) && ADMIN){
  $mode = isUserLoggedIn() ? 'article' : $_COOKIE['default_mode'];
 }
}

if(ADMIN){
 $script = ' <script type="text/javascript" src="js/lib.js" charset="'.ENCODE.'"></script>'.NL
         . ' <script type="text/javascript" src="js/photoeffect.js"></script>';
 if($mode=="write"||$mode=="edit"||$mode=="pages"||$mode=="blogbar"){
  $script .= NL.' <script type="text/javascript" src="js/editor.js" charset="'.strtolower(ENCODE).'"></script>'.NL
            .' <link rel="stylesheet" href="css/editor.css" type="text/css" />'.NL
            .' <link rel="stylesheet" id="ppBlogCSS" href="'.ROOT_PATH.$theme.'" type="text/css" />';
 }
} else $script = '';

if(is_file($theme_ini=OD.'theme.ini.php')){
 include_once($theme_ini); // $THEME_LIST の読み込み
} else {
 $input = '<?php $THEME_LIST = array('.NL.
 '\'ベーシック\'=>\'theme/basic/base.css\','.NL.
 ');?>';
 rewrite($theme_ini, $input);
}

$DIVISION['header'] .= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset='.ENCODE.'" />
<title>Administrator Only</title>
 <script type="text/javascript" src="js/oParts.js"></script>
'.$script.'
 <link rel="stylesheet" type="text/css" title="default" href="css/admin.css" />
 
';
if(ADMIN){
 $DIVISION['header'] .= '<script type="text/javascript">/*<![CDATA[*/
var mode = "'.$mode.'";
function initList(){
 if(o("#nav")){
  var LI, list = o("#controlPanel-sidebar").$.getElementsByTagName("LI");
  for(i=0, l = list.length; i < l; i++){
   LI = o(list[i]); LI.on("mouseover", listOver); LI.on("mouseout", listOut);
  }
 }
}
function listOver(){this.className+="over";}
function listOut(){this.className=this.className.replace("over", "");}

function my_confirm(text){
 if(arguments[1]) text = text;
 else text = text ? text + "削除しますか？" : "削除しますか？";
 if(!confirm(text)) return false;
 else return true;
};

function showMessage(msg, delay){
 delay = !delay ? 3500 : delay;
 if(!o("#Message")){
  var _msg, css = "position: fixed; font-size:150%; padding:1px 3px; border:solid 2px #6a9e66; text-align:center; background:ivory; color:#ff7a03; width:360px;";
  _msg = oParts.create("div#Message", css).moveTo(0, 0);
 }
 var _msg = o("#Message");
 _msg.show().css("opacity:1;").html(msg).moveTo(parseInt(eval(oParts.metrics(0)-360)*.5), parseInt(oParts.metrics(1) * 0.4));
 _msg.fade(delay);
}

function toggleHelper(ob, w){ /* .helper のクラス指定で[？]アイコン表示 */
 ob = o(ob)
 var txt = ["説明を開く", "説明を閉じる"], vs;
 w = w || -1;
 ob.sib(w).toggle(); vs = ob.sib(w).visible(); ob.title(txt[vs]);
 oParts.server.get("ajax.php?type=cookie&state="+vs);
}

function toggleColumns(){
 var sidebar = o("#controlPanel-sidebar"), main = o("#controlPanel-main"), _switch = o("#switch");
 if(!sidebar.visible()){
  sidebar.show();
  main.css("margin-left:200px");
  _switch.css("background-position: -1px -82px").title("メニューを隠します。");
 } else {
  sidebar.hide();
  main.css("margin-left:0");
  _switch.css("background-position: -1px -2px").title("メニューを表示します。");
 }
}

var i0, i1, i2, i3, i4, i5, i6, closeButton;

oParts.start(function(){

 for (var i = 0; i < oParts.callee.length; i++){
  if(oParts.callee[i] != arguments.callee) oParts.callee[i]();
 }

 oParts.imgloader({
  "i0" : "reload1.png",
  "i1" : "reload2.png",
  "i2" : "upward1.png",
  "i3" : "upward2.png",
  "i4" : "downward1.png",
  "i5" : "downward2.png",
  "i6" : "loader.gif",
  "closeButton" : "button-close.png"
  }, "Images/"
 );
 if(client.MSIE) initList();
 if(mode=="write"||mode=="edit"||mode=="pages"||mode=="blogbar") InitEditor();
 var info = o(".helper");
 if(info){
  info.each(function(o){o.title = "クリックで説明の表示・非表示を切り替えます"});
 }'.$showMsg.'
 function emptyFunc(){}

});

/*]]>*/</script>
';

} else {
 $DIVISION['header'] .= ' <script type="text/javascript">/*<![CDATA[*/
function showMessage(msg, delay){
 delay = !delay ? 5000 : delay;
 if(!o("#Message")){
  var _msg, css = "font-size:130%; padding:1px 3px; border:solid 2px #6a9e66; text-align:center; background:ivory; color:#ff7a03; width:360px";
  _msg = oParts.create("div#Message", css).moveTo(0, 0);
 }
 var _msg = o("#Message");
 _msg.show().css("opacity:1").html(msg).moveTo(parseInt(eval(oParts.metrics(0)-360)*.5), parseInt(oParts.metrics(1) * 0.4));
 _msg.fade(delay);
}

window.onload = function(){
 if(o("#ID")){
  var id = o("#ID").$;
  if(id.value.length==32) id.value = "";
  id.focus();
 }
};
/*]]>*/</script>
<base href="'.ROOT_PATH.'" />
</head>
';
}

if(!ADMIN){
 $DIVISION['body'] = '<body><div id="control-panel">';
 $umatch = $omatch = $auto_login = FALSE;
 $Failure = TRUE;
 $ID = isset($_VARS['ID']) ? $_VARS['ID'] : '';
 $PWD = isset($_VARS['PWD']) ? $_VARS['PWD'] : '';

 if(!isset($_VARS['ID'], $_VARS['PWD'])){
  if(!empty($_COOKIE['PPBLOG_AUTO_LOGIN'])){ // 自動ログインのクッキーがある
   if($hasShareUsr){
    setcookie('PPBLOG_AUTO_LOGIN', '', time()-20000); // 共有ユーザいれば自動ログインはなしで
   } else {
    $salt = substr($_COOKIE['PPBLOG_AUTO_LOGIN'], -10);
    $hash = PHP_VERSION >= '4.3.0' ? sha1($salt.OPASS.$salt).$salt : md5($salt.OPASS.$salt).$salt;
    if($hash===$_COOKIE['PPBLOG_AUTO_LOGIN']){ // 有効なクッキー
     $auto_login = $omatch = TRUE;
     $Failure = FALSE;
    }
   }
  }
 }

 if(p_('rnd') != '' && strlen(p_('rnd')) === 8){ // For timeout rescue
  if(strstr(md5($_ip).md5(OPASS), p_('rnd'))){
   $auto_login = $omatch = $timeout = TRUE;
   $Failure = FALSE;
  }
 }

 if(g_('CMD') != ''){ // For direct comment reply
  $mdec = my_decrypt(g_('CMD'));
  $limt = strrev(sprintf("%010s", base_convert(my_decrypt(substr($mdec, 40)), 2, 10)));
  if(sha1(OPASS) == substr($mdec, 0, 40)){
   if((time() - $limt) < 86400){ // within 24-h
    $auto_login = $omatch = TRUE;
    $Failure = FALSE;
   } else $Failure = TRUE;
  } else $Failure = TRUE;
 }

 if($ID==md5(OWNER) && $PWD==md5(OPASS)){ // オーナーと一致
  $omatch = TRUE;
  $Failure = FALSE;
 }

 if(!$omatch){ // オーナーは不一致、共有ユーザーをサーチしてみる
  foreach ($USR_LIST as $U){
   list(, $usrid, $upwd, $alias,) = explode('|', $U);
   if( $ID==md5($usrid) && $PWD==md5($upwd) ){
    $umatch = TRUE;
    $Failure = FALSE;
    $YNAME = !empty($alias) ? $alias : $usrid;
    break;
   }
  } #foreach
 }

 if($omatch){
  if($auto_login==TRUE || p_('auto_login')==1 || p_('type')=='auto_login' ){
   $rand = sha1(mt_rand());
   $salt = substr(base64_encode(pack("H*", $rand)), 0, 10);
   $key = sha1($salt.OPASS.$salt).$salt;
   setcookie('PPBLOG_AUTO_LOGIN', $key, time()+3600*24*7); // 新しいキーを設定
  } else {
   setcookie('PPBLOG_AUTO_LOGIN', '', time() - 20000);
  }
 }

 if($Failure==FALSE){ // 認証成立後
  $SESSION = new Session();
  if($omatch) $SESSION->data['ppBlog_OAdmin'] = "1";
  if($umatch) $SESSION->data['ppBlog_UAdmin'] = "1";

  $SESSION->data['id'] = md5(uniqid(rand(), true));
  $SESSION->data['ppBlog_login_name'] = my_encrypt($omatch ? ONAME : $YNAME);
  $SESSION->data['expire'] = time() + SESSION_LIFE_TIME * 60;

  $SESSION->register();
  $ref = str_replace('mode=login&amp;amp;', '', QUERY);
  if(p_('type')=='ajax' || p_('type')=='auto_login'){ // Ajax 経由
   if($SESSION->owner()==ONAME){
    $to = (isset($_COOKIE['default_mode']) && $_COOKIE['default_mode']=='_top') ? 'index.php' : 'admin.php'; $to = ROOT_PATH.$to;
   } else $to = ROOT_PATH.'index.php';
   if(strpos(QUERY, '&comment')) $to = ROOT_PATH.'index.php#comment';
   exit($to.'?'.$ref);
  }
  if($auto_login){
   showMessage('自動ログインモードが有効。ログイン中です ');
  } else showMessage('認証完了しました。ログイン中です ');

  if(isset($_VARS['ref']) && preg_match('{mode=(write|edit|pages)}', $_VARS['ref'])){
   $to = ROOT_PATH.'admin.php?'.($ref==''? $_VARS['ref']:$ref);
  } elseif(isset($_VARS['ref']) && preg_match('{UID=\d{9,}}', $_VARS['ref'])){
   $to = ROOT_PATH.'index.php?'.str_replace('&', '#', $_VARS['ref']);
  } else {
   if($SESSION->owner()==ONAME){
    $to = (isset($_COOKIE['default_mode']) && $_COOKIE['default_mode']=='_top') ? 'index.php?' : 'admin.php?'; $to = ROOT_PATH.$to;
   } else $to = ROOT_PATH.'index.php?';
  }
  if($timeout==FALSE){
   if(g_('CMD') != '') _header('admin.php?'.str_replace(array('&amp;CMD='.g_('CMD'), '&amp;'), array('', '&'), QUERY));
   if(strpos(QUERY, 'comment')) $to = 'index.php?'.str_replace('&amp;comment', '#comment', $ref);
   refresh_page($to);
  }
 } else { // $Failure is still TRUE
  if(!in_array($ip, $white_list) && $PWD != ''){
   $loginf = OD."login.txt";
   $ltime = time(); $ldate = date('Y-m-d@H:i:s', $ltime);
   if(is_file($loginf)){
    $loginfo = file($loginf); $lsize = count($loginfo);
    $ips = preg_grep("{.+$ip}", $loginfo); $ips = count($ips);
    if($ips > 5){
     $ban_ini_file = OD.'ban.ini.php';
     include($ban_ini_file); $hit = FALSE;
     foreach ($BAN_LIST as $i => $item){
      if(strpos($item, "$ip|0") || strpos($item, "$ip|1")){
       $BAN_LIST[$i] = "$ltime|$ip|1";
       $hit = TRUE; break;
      }
     }
     if(!$hit) array_push($BAN_LIST, "$ltime|$ip|1"); // アクセス拒否IPリストに追加
     rewrite_ini($ban_ini_file, $BAN_LIST);
     if(trim(MAILTO) != ''){
      include_once('modules/mail.inc.php');
      $msg  = 'ログイン試行が頻発しているようで、とりあえずブロックしました。IPアドレスは '.$ip.NL;
      $msg .= 'アクセス自体を拒否してます。解除するには、管理画面→「IPコントロール」→「コメント・TB拒否」から。';
      @send_jp_mail('ppBlog::連続ログイン試行', $msg, '', MAILTO);
     }
     exit("ログイン試行過多でブロックされました。");
    }
    if($lsize > 1){
     list($time1,,$ip1) = explode("\t", trim($loginfo[$lsize - 1]));
     list($time2,,$ip2) = explode("\t", trim($loginfo[$lsize - 2]));
     if(($ip1 == $ip2 && $ip1 == $ip) && $ltime - $time1 < 30){
      if(trim(MAILTO) != ''){
       include_once('modules/mail.inc.php');
       @send_jp_mail('ppBlog::連続ログイン試行', '３回ログインに失敗したかログイン試行が頻発しているようです。IPアドレスは '.$ip.NL, '', MAILTO);
      }
      $loginfo[] = $ltime."\t$ldate\t$ip".NL;
      rewrite($loginf, array_unique($loginfo));
      exit("ログイン試行が頻発しているので管理者に知らせました。");
     }
    }
    $loginfo = array_slice(array_unique($loginfo), 0, 29);
    $loginfo[] = $ltime."\t$ldate\t$ip".NL;
    rewrite($loginf, $loginfo);
   } else rewrite($loginf, $ltime."\t$ldate\t$ip".NL);
  } // #!in_array

  if(p_('type')=='ajax') exit("認証に失敗しました");

  $_err = !empty($_POST) ? '<script type="text/javascript">/*<![CDATA[*/ alert("間違ってるようです。ログインしなおしてして下さい"); /*]]>*/</script>' : '';
  $ref = str_replace('mode=login&amp;','', QUERY);
  $DIVISION['body'] .= '
<div id="loginForm">
 <h2>
  <img src="Images/go.png" alt="" width="19" height="20" style="vertical-align:middle;" /> ppBlog::Login
 </h2>
 <form action="admin.php" method="post" onSubmit="return transformIt();">
 <div style="display:none;">
  <input type="hidden" name="mode" id="mode" value="login" />
  <input type="hidden" name="ref" id="ref" value="'.$ref.'" />
  <script type="text/javascript" src="js/md5.js"></script>
  <script type="text/javascript">
   function transformIt(){
    var id = o("#ID"), pwd = o("#PWD");
    id.$.value = MD5.$(id.$.value);
    pwd.$.value = MD5.$(pwd.$.value);
    return true;
   }
  </script>
 </div>
 <p><label class="labl" for="ID" title="有効な文字は英数字とアンダースコアの32文字まで">ID</label>
  <input class="txtfield" type="text" size="32" id="ID" name="ID" maxlength="32" /><br /></p>
 <p><label class="labl" for="PWD" title="有効な文字は英数字とアンダースコアの32文字まで">PWD</label>
  <input class="txtfield" type="password" size="32" id="PWD" name="PWD" maxlength="32" /></p>
 '.($hasShareUsr ? '' :
' <p><label for="auto_login" title="自動ログインを有効にする"><small>activate auto-login?</small></label>
  <input type="checkbox" id="auto_login" name="auto_login" value="1" id="auto_login" /></p>
').'
 <p class="submit"><input type="image" title= "認 証 " src="Images/submit.png" width="68" height="21" value="Login" /></p>
</form>
</div><!--#control-panel-->'.$_err.'
</body>
</html>';
  exit ($DIVISION['header'].$DIVISION['body']);
 } # Failure is TRUE
} else {
 if($SESSION->owner()==ONAME){
 $DIVISION['body'] .= '
<div id="control-panel" >

<div id="controlPanel-sidebar">
 <div class="login-info">Logged in As <span>'.$SESSION->owner().'</span>.</div>
 <ul id="nav">
  <li><a href="index.php">ブログトップ</a></li>
  <li><a href="admin.php?mode=write" '.($mode=='write'?'class="active" ':'').'title="新しく記事を書きます">新規投稿</a></li>
  <li><a href="admin.php?mode=article" '.($mode=='article'?'class="active" ':'').'title="記事一覧から">記事の管理</a></li>
  <li><a href="admin.php?mode=config" '.($mode=='config'?'class="active" ':'').'title="">環境設定 &raquo;</a>
    <ul>
      <li><a href="admin.php?mode=config&amp;sub=detail#cfg1">全　般 　　&raquo;</a>
       <ul>
        <li><a class="bottom" href="admin.php?mode=rebuild&amp;aim=db" title="">キャッシュの更新</a></li>
       </ul>      
      </li>
      <li><a href="admin.php?mode=config&amp;sub=detail#cfg2">統計・カウンター関連</a></li>
      <li><a href="admin.php?mode=config&amp;sub=detail#cfg3">テーマ・色関連</a></li>
      <li><a href="admin.php?mode=config&amp;sub=detail#cfg4">記事の表示数</a></li>
      <li><a href="admin.php?mode=config&amp;sub=detail#cfg5" title="コメント・トラックバック関連">コメント・TB関連 &raquo;</a>
       <ul>
        <li><a href="admin.php?mode=config&amp;sub=detail#cfg5" title="コメント・トラックバック関連">コメント・TB関連</a></li>
        <li><a class="bottom" href="admin.php?mode=ban&amp;sub=ngwords" title="NGワードの設定">NGワード設定</a></li>
       </ul>
      </li>
      <li><a href="admin.php?mode=config&amp;sub=detail#cfg6">RSS・ATOM関連</a></li>
      <li><a href="admin.php?mode=config&amp;sub=detail#cfg7">そ の 他</a></li>
      <li><a href="admin.php?mode=ping">更新サーバーの管理</a></li>
      <li><a class="bottom" href="admin.php?mode=holiday">記念日の設定</a></li>
    </ul>
  </li>
  <li><a href="admin.php?mode=section&amp;sub=cat_edit" '.($mode=='section'?'class="active" ':'').'title="">カテゴリー管理 &raquo;</a>
    <ul>
      <li><a href="admin.php?mode=section&amp;sub=cat_edit">カテゴリー名の編集</a></li>
      <li><a href="admin.php?mode=section&amp;sub=cat_delete">カテゴリー削除</a></li>
      <li><a href="admin.php?mode=section&amp;sub=rotate">カテゴリー順序設定</a></li>
      <li><a href="admin.php?mode=section&amp;sub=add_cat">カテゴリーの追加</a></li>
      <li><a href="admin.php?mode=section&amp;sub=add_subcat" title="サブカテゴリー追加">サブカテ追加</a></li>
      <li><a class="bottom" href="admin.php?mode=section&amp;sub=add_icon" title="カテゴリーアイコン追加">アイコン追加</a></li>
    </ul>
  </li>
  <li><a href="admin.php?mode=pages&amp;sub=modify"'.($mode=='pages'?' class="active" ':'').'title="">ページ管理 &raquo;</a>
    <ul>
      <li><a href="admin.php?mode=pages&amp;sub=modify">ページ一覧  &raquo; </a>
';
include (OD.'pages.ini.php');
if(!empty($PAGES_LIST)){
 $DIVISION['body'] .= '       <ul>'.NL;
 $size = sizeof($PAGES_LIST) - 1;
 foreach ($PAGES_LIST as $i=>$M){
  $bottom = $i==$size ? ' class="bottom"' : '';
  list($uid, , $name) = explode('|', $M);
  $DIVISION['body'] .= '       <li><a'.$bottom.' href="admin.php?mode=pages&amp;EID='.trans_page($name).'&amp;UID='.$uid.'">'.$name.'</a></li>'.NL;
 }
 $DIVISION['body'] .= '       </ul>'.NL.'      </li>';
} else $DIVISION['body'] .= '      </li>';
$DIVISION['body'] .= '
      <li><a href="admin.php?mode=pages&amp;sub=create">新規ページの追加</a></li>
      <li><a class="bottom" href="admin.php?mode=pages&amp;sub=rotate">ページ順序設定</a></li>
    </ul>
  </li>

  <li><a href="admin.php?mode=theme&amp;sub=detail"'.($mode=='theme'?' class="active" ':'').'title="">テーマ管理 &raquo;</a>
    <ul>
';
foreach ($THEME_LIST as $name=>$path){
 $DIVISION['body'] .= '      <li><a href="admin.php?mode=theme&amp;aim='.$path.'"> '.$name.' &raquo;</a>
        <ul>
         <li><a href="admin.php?mode=theme&amp;aim='.$path.'&amp;sub=html">テンプレートHTMLの編集</a></li>
         <li><a href="admin.php?mode=theme&amp;aim='.$path.'&amp;sub=css" class="bottom">スタイルシートの編集</a></li>
        </ul>
      </li>'.NL;
}
$DIVISION['body'] .= '     <li><a href="admin.php?mode=theme&amp;sub=detail" title="テーマ名や削除など">テーマの詳細設定</a></li>
      <li><a href="admin.php?mode=theme&amp;sub=rotate" title="セレクトボックスでの順序">テーマの順序設定</a></li>
      <li><a class="bottom" href="admin.php?mode=theme&amp;sub=add_theme" title="新しいテーマを追加します">テーマの追加</a></li>
    </ul>
  </li>
  <li><a href="admin.php?mode=add_usr"'.($mode=='add_usr'?' class="active" ':'').'title="">ユーザー管理 &raquo;</a>
    <ul>
      <li><a class="bottom" href="admin.php?mode=add_usr" title="ひとつのブログを複数人で共有します">メンバーの追加</a></li>
';
$size = sizeof($USR_LIST)-1;
foreach ($USR_LIST as $i=>$usr){
 list($d, $ID,,$alias) = explode('|', $usr);
 $bottom = $i==$size ? ' class="bottom"' : '';
 $UNAME = $alias=='' ? $ID : $alias;
 $DIVISION['body'] .= '      <li><a'.$bottom.' href="admin.php?mode=add_usr&sub=detail&amp;aim='.$ID.'" title="登録日: '.date('Y-m-d', $d).' 　投稿名: '.$UNAME.'"> '.$UNAME.'</a></li>'.NL;
}
$DIVISION['body'] .= '    </ul>
  </li>
  <li><a href="admin.php?mode=imager"'.($mode=='imager'?' class="active" ':'').' title="アップした画像のサムネイルビュー">画像管理</a></li>
  <li><a href="#controlPanel" onclick="return false;"'.($mode=='backup'?' class="active" ':'').'title="記事のバックアップなどを行ないます">ログ管理 &raquo;</a>
   <ul>
      <li><a href="admin.php?mode=backup&amp;type=archives" title="HTML形式のアーカイブファイルを作成します">アーカイブ作成</a></li>
      <li><a href="admin.php?mode=backup&amp;type=mtexport" title="Movabletype形式のログを出力">MT形式エクスポート</a></li>
      <li><a class="bottom" href="admin.php?mode=backup&amp;type=mtimport" title="Movabletype形式のログを読み込みます">MT形式インポート</a></li>
    </ul>
  </li>
  <li><a href="admin.php?mode=moblog"'.($mode=='moblog'?' class="active" ':'').'title="">モブログの設定</a></li>
  <li><a href="#controlPanel" onclick="return false;"'.( (!empty($mode) && strstr('amazon|blogbar|smily|explorer|quoteit|',"$mode|")) ? ' class="active" ' : '').'title="">各種ツール &raquo;</a>
   <ul>
      <li><a href="admin.php?mode=amazon" title="アマゾンアソシエイトの設定をします">アマゾンアソシエイト</a></li>
      <li><a href="admin.php?mode=blogbar" title="ブログバーを作成します">ブログバー作成</a></li>
      <li><a href="admin.php?mode=smiley" title="顔文字を追加します">顔アイコン追加</a></li>
      <li><a href="admin.php?mode=explorer">エクスプローラー</a></li>
      <li><a href="admin.php?cancel_autologin=1" title="オートログインを解除します">自動ログイン解除</a></li>
      <li><a href="#controlPanel" onclick="return false;" title="メディアRSSの作成">Media RSS &raquo;</a>
       <ul>
        <li><a href="admin.php?mode=mrss" title="画像ギャラリー用のMRSSを作成します">MRSSの作成</a></li>
        <li><a class="bottom" href="admin.php?mode=mrss2" title="スライドショー用のMRSSを作成します">MRSSの作成 2</a></li>
       </ul>
      <li><a href="admin.php?mode=vercheck" class="bottom" title="最新バージョンのチェックに">バージョン管理</a></li>
   </ul>
  </li>
  <li><a href="admin.php?mode=ban"'.($mode=='ban'?' class="active" ':'').'title="コメントスパム対策などに">アクセス管理 &raquo;</a>
    <ul>
      <li><a href="admin.php?mode=ban&amp;sub=cmtping" title="コメントやトラックバックを拒否するIPの設定">コメント・TB拒否</a></li>
      <li><a class="bottom" href="#controlPanel" onclick="return false;" title="アクセスカウント除外の設定">統計カウント除外 &raquo;</a>
       <ul>
        <li><a href="admin.php?mode=ban&amp;sub=access" title="アクセスをカウントしないIPの設定">除外IPアドレス</a></li>
        <li><a class="bottom" href="admin.php?mode=ban&amp;sub=exwords" title="アクセスをカウントしないキーワードの設定">除外キーワード</a></li>
       </ul>
      </li>
    </ul>
  </li>
  <li><a href="stat/view.php" title="アクセス解析">アクセス解析</a></li>
  <li><a class="bottom" href="admin.php?mode='.(ADMIN?'logout':'login').'">'.(ADMIN?'ログアウト':'ログイン').'</a></li>

 </ul>

<div style="margin: 20px auto 0 30px;">
 <form action="admin.php"><div>
 <select name="default_mode" onchange="window.location=this.value" style="width: 150px;">
  <option value="" selected="selected">ログイン既定モード　</option>
  <option value="admin.php?default_mode=_top&amp;aim='.url_encode('ブログトップ').'"> ブログトップ</option>
  <option value="admin.php?default_mode=null&amp;aim='.url_encode('モード表示なし').'"> モード表示なし</option>
  <option value="admin.php?mode=write&amp;default_mode=write&amp;aim='.url_encode('新規投稿').'"> 新規投稿</option>
  <option value="admin.php?mode=article&amp;default_mode=article&amp;aim='.url_encode('記事の管理').'"> 記事の管理</option>
  <option value="admin.php?mode=config&amp;default_mode=config&amp;aim='.url_encode('環境設定').'"> 環境設定 </option>
  <option value="admin.php?mode=imager&amp;default_mode=imager&amp;aim='.url_encode('画像管理').'"> 画像管理</option>
 </select></div>
</form>
</div>

</div><!--#controlPanelsidebar-->

<div id="switch" onclick="toggleColumns();" title = "メニューを隠します。"></div>

<div id="controlPanel-main">

 ';
 } else {
 $DIVISION['body'] .= '
<div id="control-panel">
<div id="controlPanel-sidebar">
 <div class="login-info">Logged in As <span>'.$SESSION->owner().'</span>.</div>
 <ul id="nav">
  <li><a href="index.php">ブログトップ</a></li>
  <li><a href="admin.php?mode=write" '.($mode=='write'?'class="active" ':'').'title="新しく記事を書きます">新規投稿</a></li>
  <li><a href="admin.php?mode=article" '.($mode=='article'?'class="active" ':'').'title="記事一覧から">記事の管理</a></li>
  <li><a href="admin.php?mode=section" '.($mode=='section'?'class="active" ':'').'>カテゴリー管理 &raquo;</a>
    <ul>
      <li><a href="admin.php?mode=section&amp;sub=cat_edit">カテゴリー名の編集</a></li>
      <li><a href="admin.php?mode=section&amp;sub=cat_delete">カテゴリー削除</a></li>
      <li><a href="admin.php?mode=section&amp;sub=rotate">カテゴリー順序設定</a></li>
      <li><a href="admin.php?mode=section&amp;sub=add_cat">カテゴリーの追加</a></li>
      <li><a class="bottom" href="admin.php?mode=section&amp;sub=add_subcat">サブカテゴリー追加</a></li>
    </ul>
  </li>
  <li><a href="admin.php?mode=ban" title="コメントスパム対策などに">アクセス管理</a></li>
  <li><a href="stat/view.php" title="アクセス解析">アクセス解析</a></li>
  <li><a class="bottom" href="admin.php?mode='.(ADMIN?'logout':'login').'">'.(ADMIN?'ログアウト':'ログイン').'</a></li>
 </ul>
</div><!--#controlPanelsidebar-->

<div id="switch" onclick="toggleColumns();" title = "メニューを隠します。"></div>

<div id="controlPanel-main">

 ';
 }
}

if(($dfm=g_('default_mode'))!='' && g_('aim')!=''){

 setcookie('default_mode', $dfm, time()+30*24*3600);
 $mode = '';
 if($dfm=='_top') refresh_page('index.php', 1500);
 else refresh_page('admin.php?mode='.$dfm, 1500);
 $DIVISION['body'] = '<script type="text/javascript">/*<![CDATA[*/ showMessage("ログイン時のモードを「<strong>'.url_decode(g_('aim')).'</strong>」に設定しました ");; /*]]>*/</script>'.$DIVISION['body'];
}

switch ($mode){
 case 'article' : include_once('modules/article.inc.php'); break;
 case 'write' : include_once('modules/write.inc.php'); write_form(); break;
 case 'edit' : include_once('modules/edit.inc.php'); edit_form($_VARS['UID']); break;
 case 'del' : include_once('modules/delete.inc.php'); del_form($_VARS['UID']); break;
 case 'ban' : include_once('modules/ban.inc.php'); break;
 case 'config' : include_once('modules/config.inc.php'); break;
 case 'section' : include_once('modules/category.inc.php'); break;
 case 'click' : include_once('modules/click.inc.php'); dl_manager($_VARS['loc']); break;
 case 'backup' : include_once('modules/backup.inc.php'); break;
 case 'add_usr' : include_once('modules/add_usr.inc.php'); break;
 case 'comment' : case 'delete_comment' : case 'edit_comment' : case 'res_comment' :
       include_once('modules/comment.inc.php'); catch_comment($mode); break;
 case 'submit' : case 'update' : case 'delete' : catch_data(); break;
 case 'theme' : case 'theme:preview' : include_once('modules/theme.inc.php'); break;
 case 'pages' : include_once('modules/pages.inc.php'); break;
 case 'imager' : include_once('modules/imager.inc.php'); break;
 case 'moblog' : include_once('modules/moblog.inc.php'); break;
 case 'amazon' : include_once('modules/amazon.inc.php'); break;
 case 'rebuild' : make_images_DB(); break;
 case 'blogbar' : include_once('modules/blogbar.inc.php'); break;
 case 'explorer' : include_once('modules/explorer.inc.php'); break;
 case 'smiley' : include_once('modules/smiley.inc.php'); break;
 case 'holiday' : include_once('modules/anniv.inc.php'); break;
 case 'mrss' : include_once('modules/mrss.inc.php'); break;
 case 'mrss2' : include_once('modules/mrss2.inc.php'); break;
 case 'ping' : include_once('modules/ping.inc.php'); break;
 case 'vercheck' : include_once('modules/vercheck.inc.php');
 case 'null' : break;
}

echo $DIVISION['header'].$DIVISION['style'].$DIVISION['script'].'
<base href="'.ROOT_PATH.'" />
</head>'.NL.'<body id="controlPanel">'.NL.$DIVISION['body'];

function _Exit($s=''){
  exit('<body>'
  .$s.
  '</body></html>');
}

function showMessage($msg, $delay=3000){
 global $showMsg;
 @ob_start('oParts_start');
 $showMsg = 'showMessage("'.$msg.'", '.$delay.')';
 @register_shutdown_function('ob_end_flush');
}

function oParts_start($buf){
 global $showMsg;
 return str_replace('function emptyFunc(){}', $showMsg, $buf);
}
?>
</div><!--#controlPanel-main-->

<hr class="clear" />

</div><!--#control-panel-->
</body>
</html>
